
/**
* @Title: ItemCatServiceImpl.java
* @Package com.leetone.service.impl
* @Description: 【】
* @date 2018年3月16日 下午6:58:09
* @version V1.0
* @Company: 上海未泰信息技术有限公司
* @author:[谭磊][leetone123@163.com]
*/

package com.leetone.rest.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.leetone.mapper.ItemCatMapper;
import com.leetone.pojo.ItemCat;
import com.leetone.pojo.ItemCatExample;
import com.leetone.pojo.ItemCatExample.Criteria;
import com.leetone.rest.pojo.CatNode;
import com.leetone.rest.pojo.CatResult;
import com.leetone.rest.service.ItemCatService;

/**
* @ClassName: ItemCatServiceImpl
* @Description: 【】
* @date 2018年3月16日 下午6:58:09
* @Company: 上海未泰信息技术有限公司
* @author:[谭磊][leetone123@163.com]
*/
@Service
public class ItemCatServiceImpl implements ItemCatService {
	@Autowired
	private ItemCatMapper itemCatMapper;
	
	/* (非 Javadoc)
	* 
	* 
	* @param parentId
	* @return
	* @see com.leetone.service.ItemCatService#getItemCatList(long)
	*/
	@Override
	public CatResult getItemCatList() {
		CatResult result = new CatResult();
		result.setData(getCatList(0));
		return result;
	}
	
	
	
	
	
	/**
	* @Title: getCatList
	* @Description: 【递归查询分类列表数据】
	* @date 2018年3月17日 下午2:35:55
	* @author:[谭磊][leetone123@163.com]
	* @param @param parentId
	* @param @return    参数
	* @return List    返回类型
	* @throws
	*/
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private List<?> getCatList(long parentId) {
		ItemCatExample example = new ItemCatExample();
		Criteria ca = example.createCriteria();
		ca.andParentIdEqualTo(parentId);
		//执行查询
		List<ItemCat> list = itemCatMapper.selectByExample(example); 
		//返回List，进行构建
		List resultList = new ArrayList<>();
		for(ItemCat itemCat : list)
		{
			//判断是否为父节点
			if(itemCat.getIsParent()) {
				CatNode catNode = new CatNode();
				//如果是第一层节点就如下设置
				if(parentId==0)
				{
					//构建第一层的节点
					catNode.setName("<a href='/products/"+itemCat.getId()+".html'>"+itemCat.getName()+"</a>");
				}else
				{
					//深层的节点就直接是名字
					catNode.setName(itemCat.getName());
				}
				catNode.setUrl("/products/"+itemCat.getId()+".html");
				catNode.setItem(getCatList(itemCat.getId()));
				resultList.add(itemCat);
			}else
			{
				//如果是叶子节点
				resultList.add("/products/"+itemCat.getId()+".html|"+itemCat.getName()+"");
			}
		}
		return resultList;
	}

}
